/**
 * Author@ Cheng Feitian
 * Date: 2021-4-28
 * Description: 类模板与函数模板的区别
 * 1.类模板没有函数自动推导
 * 2.类模板在模板参数列表中可以有默认参数
 */

#include <algorithm>
#include <iostream>
#include <string>

using namespace std;
const int maxn = 1024;

template <class NameType,class AgeType = int>
class Person
{
public:

    NameType m_Name;
    AgeType m_Age;

    //构造函数
    Person(NameType name,AgeType age){
        this->m_Age = age;
        this->m_Name = name;
    }

    //打印属性的函数
    void showPerson(){
        cout << "Name:" << this->m_Name << "\tAge:" << this->m_Age << endl;
    }
};

void test01(){

    // Person p1("孙悟空"，1000);  //error  无法使用自动类型推导
    Person<string,int> p1("孙悟空",1000);    //right 只能使用显示指定类型
    p1.showPerson();
}

void test02(){
    Person<string> p("猪八戒",999);
    p.showPerson();
}

int main()
{
    test01();
    test02();
    return 0;
}
